I welcome any and all input or suggestions besides do it with a real code parser/generator (I've done lots of work in this area and realize the benefits, but I'm working on something that isn't as robust but gets the job done)
vim
:set magic? returns:magicI started out with the following code
namespace PracticeManagement.Foundation.DataModels
{
public class BillingStageDataAccess
{
public static IEnumerable<BillingStageDataModel> LoadRejectedGrid(string payerId, Connector cn)
{
return Pm.Dal.BillingStages.loadRejectedGrid(payerId, SessionVariables.Instance.CurrentFacility.FacilityID, cn)
.Select(r => new BillingStageDataModel(r));
}
public static IEnumerable<BillingStageDataModel> LoadPendingGrid(string payerId, Connector cn)
{
return Pm.Dal.BillingStages.loadPendingGrid(payerId, SessionVariables.Instance.CurrentFacility.FacilityID, cn)
.Select(r=> new BillingStageDataModel(r));
}
public static IEnumerable<BillingStageDataModel> LoadReviewGrid(string payerId, Connector cn)
{
return Pm.Dal.BillingStages.loadReviewGrid(payerId, SessionVariables.Instance.CurrentFacility.FacilityID, cn)
.Select(r => new BillingStageDataModel(r));
}
public static IEnumerable<BillingStageDataModel> LoadPatientBilling(bool? includeThirdParty, Connector cn)
{
return Pm.Dal.BillingStages.loadPatientBilling(SessionVariables.Instance.CurrentFacility.FacilityID, includeThirdParty, cn).Select(bsm => new BillingStageDataModel(new Pm.Schema.BillingStageRecord(bsm.Age.ToString(), 0m, 0m, bsm.DOS ?? DateTime.Now, null, 0, bsm.FirstStatement ?? DateTime.Now, bsm.NofStatements ?? 0, bsm.PatientName, bsm.ThirdPartyPayerId ?? 0, null, null, bsm.Appointmentid ?? 0, null, null)) { PrimaryGuarantorType= bsm.AppointmentPrimaryGuarantorType });
}
public static IEnumerable<BillingStageDataModel> LoadCompleted(Connector cn)
{
return Pm.Dal.BillingStages.loadCompleted(SessionVariables.Instance.CurrentFacility.FacilityID, cn).Select(bsm => new BillingStageDataModel(new Pm.Schema.BillingStageRecord(null,bsm.ClaimAmount ?? 0, 0, bsm.DOS ?? DateTime.Now, bsm.Claimdate ?? DateTime.Now, bsm.Daysfilled ?? 0, null, 0,bsm.PatientName, 0, bsm.Claimstatus, null, bsm.Appointmentid ?? 0,null,null)));
}
public static IEnumerable<BillingStageDataModel> LoadPrepGrid(int facilityId, Connector cn)
{
return Pm.Dal.BillingStages.loadPrepClaimGrid(facilityId, cn).Select(r => new BillingStageDataModel(r));
}
}
}
Stage 1
- use
ddto delete the namespace and class lines - add
module name = - highlight that block pasted into an F# file.
- then apply the regex to remove lines that only open or close blocks
:'<,'>s:^\s*[{}]\s*$:
*doesn't need an escape but in other places+does- that leaves a bunch of empty lines unfortunately
Stage 2
- re-highlight with
gv - then eliminate the
public static Twith:'<,'>s:public static [\w<>]\+:let
+needed to be escaped!
Stage 3
- re-highlight with
gv - fix indention with
<<followed by.as needed - re-highlight with
gv - eliminate returns with
:'<,'>s/return / - re-highlight with
gv - add
=on the end of the let lines with:'<,'>s:let .*:\0 = - re-highlight with
gv - Fix casing to my preference for module methods (camel-case) with
:'<,'>s:let \(\u\w\+\):let \l\1or closer to regular regex:'<,'>s:let \([A-Z]\w\+\):let \l\1
- had to escape
(and)for capturing groups - had to escape
+(:'<,'>s:let \(\u\w+\):let \l\1did not work) - didn't have to escape any of the following
.*
Stage 4 (work in progress)
fix up the method declarations a little more- re-highlight with
gv - regex:
:'<,'>s/\(let \w\+\)(\?\(\w\+\)\(?\)\? \(\w\+\)[,)]/\1(\3\4:\2)/- switch the order of type and name
- move
?(Nullable to the front for replacement with the word `Nullable` in F#) - add : of the first argument on method declaration lines with
module BillingStages =
let loadRejectedGrid(payerId:string) Connector cn) =
Pm.Dal.BillingStages.loadRejectedGrid(payerId, SessionVariables.Instance.CurrentFacility.FacilityID, cn)
.Select(r => new BillingStageDataModel(r));
let loadPendingGrid(payerId:string) Connector cn) =
Pm.Dal.BillingStages.loadPendingGrid(payerId, SessionVariables.Instance.CurrentFacility.FacilityID, cn)
.Select(r=> new BillingStageDataModel(r));
let loadReviewGrid(payerId:string) Connector cn) =
Pm.Dal.BillingStages.loadReviewGrid(payerId, SessionVariables.Instance.CurrentFacility.FacilityID, cn)
.Select(r => new BillingStageDataModel(r));
let loadPatientBilling(?includeThirdParty:bool) Connector cn) =
Pm.Dal.BillingStages.loadPatientBilling(SessionVariables.Instance.CurrentFacility.FacilityID, includeThirdParty, cn).Select(bsm => new BillingStageDataModel(new Pm.Schema.BillingStageRecord(bsm.Age.ToString(), 0m, 0m, bsm.DOS ?? DateTime.Now, null, 0, bsm.FirstStatement ?? DateTime.Now, bsm.NofStatements ?? 0, bsm.PatientName, bsm.ThirdPartyPayerId ?? 0, null, null, bsm.Appointmentid ?? 0, null, null)) { PrimaryGuarantorType= bsm.AppointmentPrimaryGuarantorType });
let loadCompleted(cn:Connector) =
Pm.Dal.BillingStages.loadCompleted(SessionVariables.Instance.CurrentFacility.FacilityID, cn).Select(bsm => new BillingStageDataModel(new Pm.Schema.BillingStageRecord(null,bsm.ClaimAmount ?? 0, 0, bsm.DOS ?? DateTime.Now, bsm.Claimdate ?? DateTime.Now, bsm.Daysfilled ?? 0, null, 0,bsm.PatientName, 0, bsm.Claimstatus, null, bsm.Appointmentid ?? 0,null,null)));
let loadPrepGrid(facilityId:int) Connector cn) =
Pm.Dal.BillingStages.loadPrepClaimGrid(facilityId, cn).Select(r => new BillingStageDataModel(r));
No comments:
Post a Comment