- GMPLSLI1 ;ISP/TC - Problem Selection List Import Utility ;04/13/2020
- ;;2.0;Problem List;**49,55**;Aug 25, 1994;Build 1
- ;
- ; External References:
- ; ICR 2053 FILE/UPDATE^DIE
- ; ICR 2320 $$PWD/$$LIST/$$FTG^%ZISH
- ; ICR 2607 BROWSE^DDBR
- ; ICR 5553 $$GETURL^XTHC10
- ; ICR 10103 $$DT^XLFDT
- ; ICR 10104 $$LJ/$$LOW/$$REPEAT^XLFSTR
- ; ICR 10026 ^DIR
- ; ICR 10142 EN^DDIOL
- ;
- IMP ; Import categories & diagnoses into a selection list
- N DIR,Y,GMPLLDOK,GMPLOPT
- ;Present the menu of import choices.
- S DIR(0)="S^HF:CSV host file;"
- S DIR(0)=DIR(0)_"WEB:CSV file from a web site"
- S DIR("A")="Select the import method"
- D ^DIR
- S GMPLOPT=Y
- I GMPLOPT="HF" D
- . S GMPLLDOK=$$LOADHF("GMPLSLIM")
- . I GMPLLDOK D IMPCSV("GMPLSLIM")
- I GMPLOPT="WEB" D
- . S GMPLLDOK=$$LOADWEB("GMPLSLIM")
- . I GMPLLDOK D IMPCSV("GMPLSLIM")
- Q
- ;============================================
- IMPCSV(GMPLNODE) ;Import comma separated data into the Problem Selection List & Category files
- ; Flag indicators: '#' - Add/edit, '@' - Delete
- ;
- ; The expected format is:
- ; #/@, Selection List Name, List Class, Category Class
- ; #/@, Category Sequence, Category Name, Subheader
- ; #/@, Problem Sequence, Display Text, ICD code, SCT code, SCT designation
- ;
- I '$D(^TMP($J,GMPLNODE)) Q 0
- N GMPLI,GMPLABRT,GMPLTMP,GMPLFLAG,GMPLIMPT,GMPLRNDE
- S (GMPLI,GMPLABRT)=0,GMPLIMPT=1,GMPLRNDE="GMPLIRPT"
- D EN^DDIOL("Starting the import process ... ","","!!")
- W !
- F S GMPLI=$O(^TMP($J,GMPLNODE,GMPLI)) Q:GMPLI="" D
- . S GMPLTMP=^TMP($J,GMPLNODE,GMPLI,1)
- . I '$$ISCSV^GMPLSLI2(GMPLTMP) Q
- . S GMPLFLAG=$P(GMPLTMP,",",1)
- . ; Retrieve/validate selection list name & class
- . I GMPLI=1 D
- . . S GMPLABRT=$$VALSLST(GMPLTMP,GMPLFLAG,GMPLIMPT,GMPLRNDE,GMPLABRT)
- . ; Retrieve/validate category information
- . I GMPLFLAG'>0,(GMPLI>1),('$L($$STRIP^XLFSTR($P(GMPLTMP,",",5),""_$C(13)_""))) D
- . . S GMPLABRT=$$VALCAT(GMPLTMP,GMPLFLAG,GMPLIMPT,GMPLRNDE,GMPLABRT)
- . ; Check for valid Problem sequence numbers
- . I GMPLI>2,($L($$STRIP^XLFSTR($P(GMPLTMP,",",5),""_$C(13)_""))) D
- . . I '+$$VSEQ^GMPLINTR(GMPLFLAG,"Problem") S GMPLABRT=1
- . ; Retrieve/validate category problems
- . I GMPLFLAG>0 D
- . . S GMPLABRT=$$VALCPROB(GMPLTMP,GMPLRNDE,GMPLABRT)
- I GMPLABRT D EN^DDIOL("Import process aborted due to validation errors.","","!!") G IMPCSVQT
- D MSGHNDL(GMPLNODE,GMPLRNDE)
- K ^TMP($J,GMPLNODE),^TMP($J,GMPLRNDE)
- IMPCSVQT W ! D PAUSE^GMPLX
- Q
- ;============================================
- LOADHF(GMPLNOUT) ;Load the CSV host file into ^TMP.
- ;The name of the host file should have a ".CSV" extension.
- N GMPLFILE,GMPLGBL,GMPLLHF,GMPLPATH,GMPLTMP
- S GMPLTMP=$$GETEHF^GMPLUTL4("CSV")
- I GMPLTMP="" Q 0
- S GMPLPATH=$P(GMPLTMP,U,1),GMPLFILE=$P(GMPLTMP,U,2)
- ;Load the host file into ^TMP.
- K ^TMP($J,GMPLNOUT),^TMP($J,"GMPLHCSV")
- S GMPLGBL="^TMP($J,""GMPLHCSV"",1)"
- S GMPLGBL=$NA(@GMPLGBL)
- ;Load the file contents into ^TMP.
- S GMPLLHF=$$FTG^%ZISH(GMPLPATH,GMPLFILE,GMPLGBL,3)
- I GMPLLHF=0 D EN^DDIOL("The host file load failed") H 2 K ^TMP($J,"GMPLHCSV") Q 0
- D RBLCKHF^GMPLSLI2("GMPLHCSV",GMPLNOUT)
- K ^TMP($J,"GMPLHCSV")
- Q 1
- ;============================================
- LOADWEB(GMPLNOUT) ;Load the CSV file from a web site into ^TMP
- N DIR,GMPLHDR,GMPLRSLT,GMPLTXT,GMPLURL,Y
- S DIR(0)="F^10:245"
- S DIR("A")="Input the URL for the CSV file"
- D ^DIR
- I (Y="")!(Y=U) Q 0
- S GMPLURL=Y
- S Y=$$LOW^XLFSTR(Y)
- ;Load the file contents into ^TMP.
- K ^TMP($J,GMPLNOUT),^TMP($J,"GMPLWCSV")
- ;DBIA #5553
- S GMPLRSLT=$$GETURL^XTHC10(GMPLURL,10,"^TMP($J,""GMPLWCSV"")",.GMPLHDR)
- I $P(GMPLRSLT,U,1)'=200 D Q 0
- . S GMPLTXT="Could not load the csv file: "
- . S GMPLTXT=GMPLTXT_"Error "_$P(GMPLRSLT,U,1)_" "_$P(GMPLRSLT,U,2)
- . D EN^DDIOL(.GMPLTXT) H 2
- . K ^TMP($J,"GMPLWCSV")
- D RBLCKWEB^GMPLSLI2("GMPLWCSV",GMPLNOUT)
- K ^TMP($J,"GMPLWCSV")
- Q 1
- ;============================================
- MSGHNDL(GMPLNODE,GMPLRNDE) ; Message prompt and handling
- N GMPLANS,GMPLSVOK,GMPLPUOK,GMPLMSG
- S GMPLANS=$$ASKYN^GMPLUTL4("Y","Do you want to review the problem selection list contents")
- I GMPLANS D BROWSE^DDBR("^TMP($J,"""_GMPLRNDE_""")","NR","Selection List Contents To Be Imported")
- S GMPLANS=$$ASKYN^GMPLUTL4("N","Do you want to save the imported list contents")
- I GMPLANS D
- . S GMPLSVOK=$$UPDTCNT(GMPLNODE)
- . I GMPLSVOK D
- . . S GMPLPUOK=$$POSTUPDT(GMPLNODE)
- . . I GMPLPUOK D EN^DDIOL("Import process completed successfully.","","!!")
- . . E D
- . . . S GMPLMSG(1)="Import process partially failed due to the above errors."
- . . . S GMPLMSG(1,"F")="!!"
- . . . S GMPLMSG(2)="Some content may/may not have been saved completely."
- . . . S GMPLMSG(3)="Verify newly imported content w/the import file, correct any errors, & re-import"
- . . . D EN^DDIOL(.GMPLMSG)
- E D EN^DDIOL("Import process aborted.","","!!")
- Q
- ;============================================
- POSTUPDT(GMPLNODE) ; Save the list categories & diagnoses
- N GMPLI,GMPLREC,GMPLFLAG,GMPLLNME,GMPLCCLS
- N GMPLCLS,GMPLCNME,GMPLADDC,GMPLOK
- S (GMPLI,GMPLADDC)=0,GMPLOK=1
- F S GMPLI=$O(^TMP($J,GMPLNODE,GMPLI)) Q:GMPLI="" D
- . S GMPLREC=^TMP($J,GMPLNODE,GMPLI,1)
- . I GMPLREC="" Q
- . S GMPLFLAG=$P(GMPLREC,",",1)
- . I GMPLI=1 D
- . . S GMPLLNME=$P(GMPLREC,",",2),GMPLCCLS=$$UP^XLFSTR($P(GMPLREC,",",4))
- . . S GMPLCLS=$S(GMPLCCLS="NATIONAL":"N",GMPLCCLS="LOCAL":"L",GMPLCCLS="VISN":"V",1:"")
- . ; Retrieve & save category info
- . I GMPLFLAG'>0,(GMPLI>1) D Q
- . . S GMPLCNME=$$UP^XLFSTR($P(GMPLREC,",",3)),GMPLADDC=$S(GMPLFLAG="#":1,1:0)
- . . S GMPLOK=$$SVC12511(GMPLREC,GMPLFLAG,GMPLCLS,GMPLCCLS,GMPLOK)
- . . I GMPLOK S GMPLOK=$$SVC12501(GMPLREC,GMPLFLAG,GMPLLNME,GMPLOK)
- . ; Retrieve & save category problems
- . I GMPLADDC,(GMPLFLAG>0) D
- . . S GMPLOK=$$SVPROB(GMPLREC,GMPLCNME,GMPLOK)
- I $D(^GMPL(125.11,0)) S $P(^GMPL(125.11,0),U,3)=0
- K ^GMPLCIEN(1),^GMPLINRT(1)
- Q GMPLOK
- ;============================================
- SVC12501(GMPLREC,GMPLFLAG,GMPLLNME,GMPLOK) ; Save category info into subfile 125.01
- N GMPLLIEN,GMPLDA,GMPLKFDA,GMPLFDA,GMPLIENS
- N GMPLCSEQ,GMPLCNME,GMPLSHDR,GMPLMSG,GMPLTXT
- S GMPLCSEQ=$P(GMPLREC,",",2),GMPLCNME=$$UP^XLFSTR($P(GMPLREC,",",3))
- S GMPLSHDR=$P(GMPLREC,",",4)
- S GMPLLIEN=+$$FIND1^DIC(125,"","K",GMPLLNME,"","","GMPLMSG")
- I GMPLFLAG="@",(GMPLLIEN>0) D G SVCQT
- . S GMPLDA=+$$FIND1^DIC(125.01,","_GMPLLIEN_",","K",GMPLCNME,"","","GMPLMSG")
- . I GMPLDA>0 D
- . . S GMPLKFDA(125.01,""_GMPLDA_","_GMPLLIEN_",",.01)="@"
- . . D FILE^DIE("K","GMPLKFDA","GMPLMSG")
- I GMPLFLAG="@" G SVCQT
- S GMPLIENS=$S(GMPLLIEN>0:"+2,"_GMPLLIEN_",",1:"+2,+1,")
- S GMPLFDA(125.01,GMPLIENS,.01)=GMPLCNME
- S GMPLFDA(125.01,GMPLIENS,.02)=GMPLCSEQ
- S GMPLFDA(125.01,GMPLIENS,.03)=GMPLSHDR
- S GMPLFDA(125.01,GMPLIENS,.04)="YES"
- D UPDATE^DIE("E","GMPLFDA","","GMPLMSG")
- SVCQT I $D(GMPLMSG) D
- . S GMPLTXT(1)="Unable to "_$S(GMPLFLAG="@":"delete",1:"store")
- . S GMPLTXT(1)=GMPLTXT(1)_" category "_GMPLCNME_" under list "_GMPLLNME
- . S GMPLTXT(2)="Error "_GMPLMSG("DIERR",1)_": "_GMPLMSG("DIERR",1,"TEXT",1)
- . D EN^DDIOL(.GMPLTXT) S GMPLOK=0
- Q GMPLOK
- ;============================================
- SVC12511(GMPLREC,GMPLFLAG,GMPLCLS,GMPLCCLS,GMPLOK) ; Save category info into file 125.11
- N GMPLCSEQ,GMPLCNME,GMPLSHDR,GMPLKFDA
- N GMPLMSG,GMPLFDA,GMPLTXT
- K ^GMPLCIEN(1),^GMPLINRT(1)
- S GMPLCSEQ=$P(GMPLREC,",",2),GMPLCNME=$$UP^XLFSTR($P(GMPLREC,",",3))
- S GMPLSHDR=$P(GMPLREC,",",4)
- ;If there are any existing entries for this category,
- ;delete them prior to storing the new set.
- S ^GMPLCIEN(1)=+$$FIND1^DIC(125.11,"","K",GMPLCNME,"","","GMPLMSG")
- I $G(^GMPLCIEN(1))>0 D
- . S ^GMPLINRT(1)=^GMPLCIEN(1)
- . S GMPLKFDA(125.11,""_$G(^GMPLCIEN(1))_",",.01)="@"
- . D FILE^DIE("K","GMPLKFDA","GMPLMSG")
- E S ^GMPLINRT(1)=""
- I GMPLFLAG="@" G SVCQT1
- S GMPLFDA(125.11,"+1,",.01)=GMPLCNME
- S GMPLFDA(125.11,"+1,",.02)=$$DT^XLFDT
- S GMPLFDA(125.11,"+1,",.03)=GMPLCLS
- D UPDATE^DIE("","GMPLFDA","^GMPLINRT","GMPLMSG")
- SVCQT1 I $D(GMPLMSG) D Q
- . S GMPLTXT(1)="Unable to "_$S(GMPLFLAG="@":"delete",1:"store")
- . S GMPLTXT(1)=GMPLTXT(1)_" category "_GMPLCNME_" and class "_GMPLCCLS_" in file #125.11."
- . S GMPLTXT(2)="Error "_GMPLMSG("DIERR",1)_": "_GMPLMSG("DIERR",1,"TEXT",1)
- . D EN^DDIOL(.GMPLTXT) S GMPLOK=0
- Q GMPLOK
- ;============================================
- SVPROB(GMPLREC,GMPLCNME,GMPLOK) ; Save category problems into subfile 125.11
- N GMPLDTXT,GMPLPSEQ,GMPLICD,GMPLSCTC,GMPLSCTD
- N GMPLLTRM,GMPLMSG,GMPLTXT,GMPLISTR,GMPLFDA
- I $L(GMPLREC,",")>5 D
- . N GMPLTPC,GMPLDPC,GMPLK
- . S GMPLTPC=$L(GMPLREC,","),GMPLDPC=GMPLTPC-4,GMPLDTXT=""
- . F GMPLK=2:1:(GMPLDPC+1) S GMPLDTXT=GMPLDTXT_$S(GMPLK>2:",",1:"")_$P(GMPLREC,",",GMPLK)
- . S GMPLPSEQ=$$STRIP^XLFSTR($P(GMPLREC,",",1)," "),GMPLDTXT=$$STRIP^XLFSTR(GMPLDTXT,"""")
- . S GMPLICD=$$STRIP^XLFSTR($P(GMPLREC,",",(GMPLDPC+2))," ")
- . S GMPLSCTC=$$STRIP^XLFSTR($$STRIP^XLFSTR($P(GMPLREC,",",(GMPLDPC+3)),"C")," ")
- . S GMPLSCTD=$$STRIP^XLFSTR($$STRIP^XLFSTR($P($P(GMPLREC,",",(GMPLDPC+4)),""_$C(13)_""),"D")," ")
- E D
- . S GMPLPSEQ=$$STRIP^XLFSTR($P(GMPLREC,",",1)," "),GMPLDTXT=$$STRIP^XLFSTR($P(GMPLREC,",",2),"""")
- . S GMPLICD=$$STRIP^XLFSTR($P(GMPLREC,",",3)," "),GMPLSCTC=$$STRIP^XLFSTR($$STRIP^XLFSTR($P(GMPLREC,",",4),"C")," ")
- . S GMPLSCTD=$$STRIP^XLFSTR($$STRIP^XLFSTR($P($P(GMPLREC,",",5),""_$C(13)_""),"D")," ")
- S GMPLLTRM=$$GETEXIEN^GMPLX(GMPLSCTC,GMPLSCTD)
- I GMPLDTXT["sct" S GMPLDTXT=$P(GMPLDTXT,"(")_"("_$$UP^XLFSTR($P($P(GMPLDTXT,"(",2)," "))_" "_$P($P(GMPLDTXT,"(",2)," ",2)
- I GMPLDTXT'["SCT" S GMPLDTXT=GMPLDTXT_" (SCT "_GMPLSCTC_")"
- I +GMPLLTRM<0 D Q
- . S GMPLTXT(1)="Unable to save "_GMPLDTXT
- . S GMPLTXT(2)="Error: "_$P(GMPLLTRM,U,2)
- . D EN^DDIOL(.GMPLTXT) S GMPLOK=0
- S GMPLISTR=$S(^GMPLCIEN(1)>0:"+2,"_^GMPLCIEN(1)_",",1:"+2,"_^GMPLINRT(1)_",")
- S GMPLFDA(125.111,GMPLISTR,.01)=GMPLLTRM
- S GMPLFDA(125.111,GMPLISTR,.02)=GMPLPSEQ
- S GMPLFDA(125.111,GMPLISTR,.03)=GMPLDTXT
- S GMPLFDA(125.111,GMPLISTR,.04)=GMPLICD
- S GMPLFDA(125.111,GMPLISTR,.05)=GMPLSCTC
- S GMPLFDA(125.111,GMPLISTR,.06)=GMPLSCTD
- D UPDATE^DIE("","GMPLFDA","","GMPLMSG")
- I $D(GMPLMSG) D
- . S GMPLTXT(1)="Unable to store problem: "_GMPLDTXT_" from category "_GMPLCNME_"."
- . S GMPLTXT(2)="Error "_GMPLMSG("DIERR",1)_": "_GMPLMSG("DIERR",1,"TEXT",1)
- . D EN^DDIOL(.GMPLTXT) S GMPLOK=0
- Q GMPLOK
- ;============================================
- UPDTCNT(GMPLNODE) ; Save/delete the list name & class
- ; Flag indicators: # - Add/edit list, @ - Delete list
- N GMPLLST,GMPLFDA,GMPLMSG,GMPLLNME,GMPLLCLS,GMPLCLS
- N GMPLSUC,GMPLTXT,GMPLIEN,GMPLINRT,GMPLFLAG
- S GMPLSUC=1
- S GMPLLST=^TMP($J,GMPLNODE,1,1)
- S GMPLFLAG=$P(GMPLLST,",",1)
- S GMPLLNME=$$UP^XLFSTR($P(GMPLLST,",",2))
- S GMPLLCLS=$$UP^XLFSTR($P(GMPLLST,",",3))
- S GMPLCLS=$S(GMPLLCLS="NATIONAL":"N",GMPLLCLS="LOCAL":"L",GMPLLCLS="VISN":"V",1:"")
- S GMPLIEN=+$$FIND1^DIC(125,"","K",GMPLLNME,"","","GMPLMSG")
- I GMPLIEN>0 D
- . S GMPLINRT(1)=GMPLIEN
- . S GMPLFDA(125,""_GMPLIEN_",",.01)="@"
- . D FILE^DIE("K","GMPLFDA","GMPLMSG")
- I GMPLFLAG="@" G UPQT
- S GMPLFDA(125,"+1,",.01)=GMPLLNME
- S GMPLFDA(125,"+1,",.02)=$$DT^XLFDT
- S GMPLFDA(125,"+1,",.04)=GMPLCLS
- D UPDATE^DIE("","GMPLFDA","GMPLINRT","GMPLMSG")
- UPQT I $D(GMPLMSG) D
- . S GMPLTXT(1)="Unable to "_$S(GMPLFLAG="@":"delete",1:"store")
- . S GMPLTXT(1)=GMPLTXT(1)_" list "_GMPLLNME_" and class "_GMPLLCLS_" in file #125."
- . S GMPLTXT(2)="Error: "_GMPLMSG("DIERR",1,"TEXT",1)
- . D EN^DDIOL(.GMPLTXT)
- . S GMPLSUC=0
- ;Reset the 125 0 node so holes are not left.
- I $D(^GMPL(125,0)) S $P(^GMPL(125,0),U,3)=0
- Q GMPLSUC
- ;============================================
- VALCAT(GMPLTMP,GMPLFLAG,GMPLIMPT,GMPLRNDE,GMPLABRT) ; Validate category info
- N GMPLCSEQ,GMPLCNME,GMPLSHDR,GMPLHSTR,GMPLSQST,GMPLNL
- S GMPLCSEQ=$P(GMPLTMP,",",2),GMPLCNME=$P(GMPLTMP,",",3)
- S GMPLSHDR=$P(GMPLTMP,",",4),GMPLHSTR="Subheader: "_GMPLSHDR
- S GMPLNL=$G(^TMP($J,GMPLRNDE))
- I '+$$VFLAG^GMPLINTR(GMPLFLAG) S GMPLABRT=1
- I '+$$VSEQ^GMPLINTR(GMPLCSEQ,"Category") S GMPLABRT=1
- E S GMPLSQST="Category Sequence: "_GMPLCSEQ
- I '+$$VNAME^GMPLINTR(GMPLCNME,GMPLIMPT,"Category") D
- . D EN^DDIOL(" For category sequence #"_GMPLCSEQ_".")
- . S GMPLABRT=1
- I 'GMPLABRT D
- . S GMPLNL=GMPLNL+1,^TMP($J,GMPLRNDE,GMPLNL)=""
- . S GMPLNL=GMPLNL+1,^TMP($J,GMPLRNDE,GMPLNL)="Category Name: "_GMPLCNME_$S(GMPLFLAG="@":" ***MARKED FOR DELETION!!!***",1:"")
- . S GMPLNL=GMPLNL+1,^TMP($J,GMPLRNDE,GMPLNL)=$$LJ^XLFSTR(GMPLHSTR,47)_$$LJ^XLFSTR(GMPLSQST,33)
- . S GMPLNL=GMPLNL+1,^TMP($J,GMPLRNDE,GMPLNL)=""
- . S GMPLNL=GMPLNL+1,^TMP($J,GMPLRNDE,GMPLNL)="Prob"_$J("SNOMED CT",10)_$J("SNOMED CT",21)
- . S GMPLNL=GMPLNL+1,^TMP($J,GMPLRNDE,GMPLNL)="Seq"_$J("Concept",9)_$J("Designation",25)_$J("ICD Code",18)_$J("SNOMED CT Description",42)
- . S GMPLNL=GMPLNL+1,^TMP($J,GMPLRNDE,GMPLNL)=$$REPEAT^XLFSTR("-",150)
- S ^TMP($J,GMPLRNDE)=GMPLNL
- Q GMPLABRT
- ;============================================
- VALCPROB(GMPLTMP,GMPLRNDE,GMPLABRT) ; Validate category problems
- N GMPLPSEQ,GMPLDTXT,GMPLICD,GMPLSCTC,GMPLSCTD,GMPLNL
- S GMPLNL=$G(^TMP($J,GMPLRNDE))
- I $L(GMPLTMP,",")>5 D
- . N GMPLTPC,GMPLDPC,GMPLK
- . S GMPLTPC=$L(GMPLTMP,","),GMPLDPC=GMPLTPC-4,GMPLDTXT=""
- . F GMPLK=2:1:(GMPLDPC+1) S GMPLDTXT=GMPLDTXT_$S(GMPLK>2:",",1:"")_$P(GMPLTMP,",",GMPLK)
- . S GMPLPSEQ=$$STRIP^XLFSTR($P(GMPLTMP,",",1)," "),GMPLDTXT=$$STRIP^XLFSTR(GMPLDTXT,"""")
- . S GMPLICD=$$STRIP^XLFSTR($P(GMPLTMP,",",(GMPLDPC+2))," ")
- . S GMPLSCTC=$$STRIP^XLFSTR($$STRIP^XLFSTR($P(GMPLTMP,",",(GMPLDPC+3)),"C")," ")
- . S GMPLSCTD=$$STRIP^XLFSTR($$STRIP^XLFSTR($P($P(GMPLTMP,",",(GMPLDPC+4)),""_$C(13)_""),"D")," ")
- E D
- . S GMPLPSEQ=$$STRIP^XLFSTR($P(GMPLTMP,",",1)," "),GMPLDTXT=$$STRIP^XLFSTR($P(GMPLTMP,",",2),"""")
- . S GMPLICD=$$STRIP^XLFSTR($P(GMPLTMP,",",3)," "),GMPLSCTC=$$STRIP^XLFSTR($$STRIP^XLFSTR($P(GMPLTMP,",",4),"C")," ")
- . S GMPLSCTD=$$STRIP^XLFSTR($$STRIP^XLFSTR($P($P(GMPLTMP,",",5),""_$C(13)_""),"D")," ")
- I GMPLDTXT["sct" S GMPLDTXT=$P(GMPLDTXT,"(")_"("_$$UP^XLFSTR($P($P(GMPLDTXT,"(",2)," "))_" "_$P($P(GMPLDTXT,"(",2)," ",2)
- I GMPLDTXT'["SCT" S GMPLDTXT=GMPLDTXT_" (SCT "_GMPLSCTC_")"
- I '+$$VICD^GMPLINTR(GMPLICD) S GMPLABRT=1
- I '+$$VSCTCODE^GMPLINTR(GMPLSCTC) S GMPLABRT=1 Q GMPLABRT
- I '+$$VSCTDSGN^GMPLINTR(GMPLSCTC,GMPLSCTD,$P(GMPLDTXT," (SCT")) S GMPLABRT=1
- I 'GMPLABRT D
- . S GMPLNL=GMPLNL+1,^TMP($J,GMPLRNDE,GMPLNL)=$$LJ^XLFSTR(GMPLPSEQ,5)_$$LJ^XLFSTR(GMPLSCTC,21)_$$LJ^XLFSTR(GMPLSCTD,21)_$$LJ^XLFSTR(GMPLICD,29)_$$LJ^XLFSTR(GMPLDTXT,80)
- S ^TMP($J,GMPLRNDE)=GMPLNL
- Q GMPLABRT
- ;============================================
- VALSLST(GMPLTMP,GMPLFLAG,GMPLIMPT,GMPLRNDE,GMPLABRT) ; Validate selection list & class
- N GMPLLNME,GMPLLCLS,GMPLCCLS,GMPLNL
- S GMPLLNME=$P(GMPLTMP,",",2),GMPLLCLS=$P(GMPLTMP,",",3)
- S GMPLCCLS=$P(GMPLTMP,",",4),GMPLNL=0
- K ^TMP($J,GMPLRNDE)
- I GMPLFLAG="@" S GMPLNL=GMPLNL+1,^TMP($J,GMPLRNDE,GMPLNL)="***MARKED FOR DELETION!!!***"
- I '+$$VFLAG^GMPLINTR(GMPLFLAG) S GMPLABRT=1
- I '+$$VNAME^GMPLINTR(GMPLLNME,GMPLIMPT,"List") S GMPLABRT=1
- I '+$$VCLASS^GMPLINTR(GMPLLCLS,GMPLIMPT,"List") S GMPLABRT=1
- I '+$$VCLASS^GMPLINTR(GMPLCCLS,GMPLIMPT,"Category") S GMPLABRT=1
- I 'GMPLABRT D
- . S GMPLNL=GMPLNL+1,^TMP($J,GMPLRNDE,GMPLNL)="Selection List Name: "_GMPLLNME
- . S GMPLNL=GMPLNL+1,^TMP($J,GMPLRNDE,GMPLNL)="List Class: "_GMPLLCLS_$J("Category Class: ",34)_GMPLCCLS
- S ^TMP($J,GMPLRNDE)=GMPLNL
- Q GMPLABRT
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HGMPLSLI1 15521 printed Apr 23, 2025@18:44:55 Page 2
- GMPLSLI1 ;ISP/TC - Problem Selection List Import Utility ;04/13/2020
- +1 ;;2.0;Problem List;**49,55**;Aug 25, 1994;Build 1
- +2 ;
- +3 ; External References:
- +4 ; ICR 2053 FILE/UPDATE^DIE
- +5 ; ICR 2320 $$PWD/$$LIST/$$FTG^%ZISH
- +6 ; ICR 2607 BROWSE^DDBR
- +7 ; ICR 5553 $$GETURL^XTHC10
- +8 ; ICR 10103 $$DT^XLFDT
- +9 ; ICR 10104 $$LJ/$$LOW/$$REPEAT^XLFSTR
- +10 ; ICR 10026 ^DIR
- +11 ; ICR 10142 EN^DDIOL
- +12 ;
- IMP ; Import categories & diagnoses into a selection list
- +1 NEW DIR,Y,GMPLLDOK,GMPLOPT
- +2 ;Present the menu of import choices.
- +3 SET DIR(0)="S^HF:CSV host file;"
- +4 SET DIR(0)=DIR(0)_"WEB:CSV file from a web site"
- +5 SET DIR("A")="Select the import method"
- +6 DO ^DIR
- +7 SET GMPLOPT=Y
- +8 IF GMPLOPT="HF"
- Begin DoDot:1
- +9 SET GMPLLDOK=$$LOADHF("GMPLSLIM")
- +10 IF GMPLLDOK
- DO IMPCSV("GMPLSLIM")
- End DoDot:1
- +11 IF GMPLOPT="WEB"
- Begin DoDot:1
- +12 SET GMPLLDOK=$$LOADWEB("GMPLSLIM")
- +13 IF GMPLLDOK
- DO IMPCSV("GMPLSLIM")
- End DoDot:1
- +14 QUIT
- +15 ;============================================
- IMPCSV(GMPLNODE) ;Import comma separated data into the Problem Selection List & Category files
- +1 ; Flag indicators: '#' - Add/edit, '@' - Delete
- +2 ;
- +3 ; The expected format is:
- +4 ; #/@, Selection List Name, List Class, Category Class
- +5 ; #/@, Category Sequence, Category Name, Subheader
- +6 ; #/@, Problem Sequence, Display Text, ICD code, SCT code, SCT designation
- +7 ;
- +8 IF '$DATA(^TMP($JOB,GMPLNODE))
- QUIT 0
- +9 NEW GMPLI,GMPLABRT,GMPLTMP,GMPLFLAG,GMPLIMPT,GMPLRNDE
- +10 SET (GMPLI,GMPLABRT)=0
- SET GMPLIMPT=1
- SET GMPLRNDE="GMPLIRPT"
- +11 DO EN^DDIOL("Starting the import process ... ","","!!")
- +12 WRITE !
- +13 FOR
- SET GMPLI=$ORDER(^TMP($JOB,GMPLNODE,GMPLI))
- if GMPLI=""
- QUIT
- Begin DoDot:1
- +14 SET GMPLTMP=^TMP($JOB,GMPLNODE,GMPLI,1)
- +15 IF '$$ISCSV^GMPLSLI2(GMPLTMP)
- QUIT
- +16 SET GMPLFLAG=$PIECE(GMPLTMP,",",1)
- +17 ; Retrieve/validate selection list name & class
- +18 IF GMPLI=1
- Begin DoDot:2
- +19 SET GMPLABRT=$$VALSLST(GMPLTMP,GMPLFLAG,GMPLIMPT,GMPLRNDE,GMPLABRT)
- End DoDot:2
- +20 ; Retrieve/validate category information
- +21 IF GMPLFLAG'>0
- IF (GMPLI>1)
- IF ('$LENGTH($$STRIP^XLFSTR($PIECE(GMPLTMP,",",5),""_$CHAR(13)_"")))
- Begin DoDot:2
- +22 SET GMPLABRT=$$VALCAT(GMPLTMP,GMPLFLAG,GMPLIMPT,GMPLRNDE,GMPLABRT)
- End DoDot:2
- +23 ; Check for valid Problem sequence numbers
- +24 IF GMPLI>2
- IF ($LENGTH($$STRIP^XLFSTR($PIECE(GMPLTMP,",",5),""_$CHAR(13)_"")))
- Begin DoDot:2
- +25 IF '+$$VSEQ^GMPLINTR(GMPLFLAG,"Problem")
- SET GMPLABRT=1
- End DoDot:2
- +26 ; Retrieve/validate category problems
- +27 IF GMPLFLAG>0
- Begin DoDot:2
- +28 SET GMPLABRT=$$VALCPROB(GMPLTMP,GMPLRNDE,GMPLABRT)
- End DoDot:2
- End DoDot:1
- +29 IF GMPLABRT
- DO EN^DDIOL("Import process aborted due to validation errors.","","!!")
- GOTO IMPCSVQT
- +30 DO MSGHNDL(GMPLNODE,GMPLRNDE)
- +31 KILL ^TMP($JOB,GMPLNODE),^TMP($JOB,GMPLRNDE)
- IMPCSVQT WRITE !
- DO PAUSE^GMPLX
- +1 QUIT
- +2 ;============================================
- LOADHF(GMPLNOUT) ;Load the CSV host file into ^TMP.
- +1 ;The name of the host file should have a ".CSV" extension.
- +2 NEW GMPLFILE,GMPLGBL,GMPLLHF,GMPLPATH,GMPLTMP
- +3 SET GMPLTMP=$$GETEHF^GMPLUTL4("CSV")
- +4 IF GMPLTMP=""
- QUIT 0
- +5 SET GMPLPATH=$PIECE(GMPLTMP,U,1)
- SET GMPLFILE=$PIECE(GMPLTMP,U,2)
- +6 ;Load the host file into ^TMP.
- +7 KILL ^TMP($JOB,GMPLNOUT),^TMP($JOB,"GMPLHCSV")
- +8 SET GMPLGBL="^TMP($J,""GMPLHCSV"",1)"
- +9 SET GMPLGBL=$NAME(@GMPLGBL)
- +10 ;Load the file contents into ^TMP.
- +11 SET GMPLLHF=$$FTG^%ZISH(GMPLPATH,GMPLFILE,GMPLGBL,3)
- +12 IF GMPLLHF=0
- DO EN^DDIOL("The host file load failed")
- HANG 2
- KILL ^TMP($JOB,"GMPLHCSV")
- QUIT 0
- +13 DO RBLCKHF^GMPLSLI2("GMPLHCSV",GMPLNOUT)
- +14 KILL ^TMP($JOB,"GMPLHCSV")
- +15 QUIT 1
- +16 ;============================================
- LOADWEB(GMPLNOUT) ;Load the CSV file from a web site into ^TMP
- +1 NEW DIR,GMPLHDR,GMPLRSLT,GMPLTXT,GMPLURL,Y
- +2 SET DIR(0)="F^10:245"
- +3 SET DIR("A")="Input the URL for the CSV file"
- +4 DO ^DIR
- +5 IF (Y="")!(Y=U)
- QUIT 0
- +6 SET GMPLURL=Y
- +7 SET Y=$$LOW^XLFSTR(Y)
- +8 ;Load the file contents into ^TMP.
- +9 KILL ^TMP($JOB,GMPLNOUT),^TMP($JOB,"GMPLWCSV")
- +10 ;DBIA #5553
- +11 SET GMPLRSLT=$$GETURL^XTHC10(GMPLURL,10,"^TMP($J,""GMPLWCSV"")",.GMPLHDR)
- +12 IF $PIECE(GMPLRSLT,U,1)'=200
- Begin DoDot:1
- +13 SET GMPLTXT="Could not load the csv file: "
- +14 SET GMPLTXT=GMPLTXT_"Error "_$PIECE(GMPLRSLT,U,1)_" "_$PIECE(GMPLRSLT,U,2)
- +15 DO EN^DDIOL(.GMPLTXT)
- HANG 2
- +16 KILL ^TMP($JOB,"GMPLWCSV")
- End DoDot:1
- QUIT 0
- +17 DO RBLCKWEB^GMPLSLI2("GMPLWCSV",GMPLNOUT)
- +18 KILL ^TMP($JOB,"GMPLWCSV")
- +19 QUIT 1
- +20 ;============================================
- MSGHNDL(GMPLNODE,GMPLRNDE) ; Message prompt and handling
- +1 NEW GMPLANS,GMPLSVOK,GMPLPUOK,GMPLMSG
- +2 SET GMPLANS=$$ASKYN^GMPLUTL4("Y","Do you want to review the problem selection list contents")
- +3 IF GMPLANS
- DO BROWSE^DDBR("^TMP($J,"""_GMPLRNDE_""")","NR","Selection List Contents To Be Imported")
- +4 SET GMPLANS=$$ASKYN^GMPLUTL4("N","Do you want to save the imported list contents")
- +5 IF GMPLANS
- Begin DoDot:1
- +6 SET GMPLSVOK=$$UPDTCNT(GMPLNODE)
- +7 IF GMPLSVOK
- Begin DoDot:2
- +8 SET GMPLPUOK=$$POSTUPDT(GMPLNODE)
- +9 IF GMPLPUOK
- DO EN^DDIOL("Import process completed successfully.","","!!")
- +10 IF '$TEST
- Begin DoDot:3
- +11 SET GMPLMSG(1)="Import process partially failed due to the above errors."
- +12 SET GMPLMSG(1,"F")="!!"
- +13 SET GMPLMSG(2)="Some content may/may not have been saved completely."
- +14 SET GMPLMSG(3)="Verify newly imported content w/the import file, correct any errors, & re-import"
- +15 DO EN^DDIOL(.GMPLMSG)
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +16 IF '$TEST
- DO EN^DDIOL("Import process aborted.","","!!")
- +17 QUIT
- +18 ;============================================
- POSTUPDT(GMPLNODE) ; Save the list categories & diagnoses
- +1 NEW GMPLI,GMPLREC,GMPLFLAG,GMPLLNME,GMPLCCLS
- +2 NEW GMPLCLS,GMPLCNME,GMPLADDC,GMPLOK
- +3 SET (GMPLI,GMPLADDC)=0
- SET GMPLOK=1
- +4 FOR
- SET GMPLI=$ORDER(^TMP($JOB,GMPLNODE,GMPLI))
- if GMPLI=""
- QUIT
- Begin DoDot:1
- +5 SET GMPLREC=^TMP($JOB,GMPLNODE,GMPLI,1)
- +6 IF GMPLREC=""
- QUIT
- +7 SET GMPLFLAG=$PIECE(GMPLREC,",",1)
- +8 IF GMPLI=1
- Begin DoDot:2
- +9 SET GMPLLNME=$PIECE(GMPLREC,",",2)
- SET GMPLCCLS=$$UP^XLFSTR($PIECE(GMPLREC,",",4))
- +10 SET GMPLCLS=$SELECT(GMPLCCLS="NATIONAL":"N",GMPLCCLS="LOCAL":"L",GMPLCCLS="VISN":"V",1:"")
- End DoDot:2
- +11 ; Retrieve & save category info
- +12 IF GMPLFLAG'>0
- IF (GMPLI>1)
- Begin DoDot:2
- +13 SET GMPLCNME=$$UP^XLFSTR($PIECE(GMPLREC,",",3))
- SET GMPLADDC=$SELECT(GMPLFLAG="#":1,1:0)
- +14 SET GMPLOK=$$SVC12511(GMPLREC,GMPLFLAG,GMPLCLS,GMPLCCLS,GMPLOK)
- +15 IF GMPLOK
- SET GMPLOK=$$SVC12501(GMPLREC,GMPLFLAG,GMPLLNME,GMPLOK)
- End DoDot:2
- QUIT
- +16 ; Retrieve & save category problems
- +17 IF GMPLADDC
- IF (GMPLFLAG>0)
- Begin DoDot:2
- +18 SET GMPLOK=$$SVPROB(GMPLREC,GMPLCNME,GMPLOK)
- End DoDot:2
- End DoDot:1
- +19 IF $DATA(^GMPL(125.11,0))
- SET $PIECE(^GMPL(125.11,0),U,3)=0
- +20 KILL ^GMPLCIEN(1),^GMPLINRT(1)
- +21 QUIT GMPLOK
- +22 ;============================================
- SVC12501(GMPLREC,GMPLFLAG,GMPLLNME,GMPLOK) ; Save category info into subfile 125.01
- +1 NEW GMPLLIEN,GMPLDA,GMPLKFDA,GMPLFDA,GMPLIENS
- +2 NEW GMPLCSEQ,GMPLCNME,GMPLSHDR,GMPLMSG,GMPLTXT
- +3 SET GMPLCSEQ=$PIECE(GMPLREC,",",2)
- SET GMPLCNME=$$UP^XLFSTR($PIECE(GMPLREC,",",3))
- +4 SET GMPLSHDR=$PIECE(GMPLREC,",",4)
- +5 SET GMPLLIEN=+$$FIND1^DIC(125,"","K",GMPLLNME,"","","GMPLMSG")
- +6 IF GMPLFLAG="@"
- IF (GMPLLIEN>0)
- Begin DoDot:1
- +7 SET GMPLDA=+$$FIND1^DIC(125.01,","_GMPLLIEN_",","K",GMPLCNME,"","","GMPLMSG")
- +8 IF GMPLDA>0
- Begin DoDot:2
- +9 SET GMPLKFDA(125.01,""_GMPLDA_","_GMPLLIEN_",",.01)="@"
- +10 DO FILE^DIE("K","GMPLKFDA","GMPLMSG")
- End DoDot:2
- End DoDot:1
- GOTO SVCQT
- +11 IF GMPLFLAG="@"
- GOTO SVCQT
- +12 SET GMPLIENS=$SELECT(GMPLLIEN>0:"+2,"_GMPLLIEN_",",1:"+2,+1,")
- +13 SET GMPLFDA(125.01,GMPLIENS,.01)=GMPLCNME
- +14 SET GMPLFDA(125.01,GMPLIENS,.02)=GMPLCSEQ
- +15 SET GMPLFDA(125.01,GMPLIENS,.03)=GMPLSHDR
- +16 SET GMPLFDA(125.01,GMPLIENS,.04)="YES"
- +17 DO UPDATE^DIE("E","GMPLFDA","","GMPLMSG")
- SVCQT IF $DATA(GMPLMSG)
- Begin DoDot:1
- +1 SET GMPLTXT(1)="Unable to "_$SELECT(GMPLFLAG="@":"delete",1:"store")
- +2 SET GMPLTXT(1)=GMPLTXT(1)_" category "_GMPLCNME_" under list "_GMPLLNME
- +3 SET GMPLTXT(2)="Error "_GMPLMSG("DIERR",1)_": "_GMPLMSG("DIERR",1,"TEXT",1)
- +4 DO EN^DDIOL(.GMPLTXT)
- SET GMPLOK=0
- End DoDot:1
- +5 QUIT GMPLOK
- +6 ;============================================
- SVC12511(GMPLREC,GMPLFLAG,GMPLCLS,GMPLCCLS,GMPLOK) ; Save category info into file 125.11
- +1 NEW GMPLCSEQ,GMPLCNME,GMPLSHDR,GMPLKFDA
- +2 NEW GMPLMSG,GMPLFDA,GMPLTXT
- +3 KILL ^GMPLCIEN(1),^GMPLINRT(1)
- +4 SET GMPLCSEQ=$PIECE(GMPLREC,",",2)
- SET GMPLCNME=$$UP^XLFSTR($PIECE(GMPLREC,",",3))
- +5 SET GMPLSHDR=$PIECE(GMPLREC,",",4)
- +6 ;If there are any existing entries for this category,
- +7 ;delete them prior to storing the new set.
- +8 SET ^GMPLCIEN(1)=+$$FIND1^DIC(125.11,"","K",GMPLCNME,"","","GMPLMSG")
- +9 IF $GET(^GMPLCIEN(1))>0
- Begin DoDot:1
- +10 SET ^GMPLINRT(1)=^GMPLCIEN(1)
- +11 SET GMPLKFDA(125.11,""_$GET(^GMPLCIEN(1))_",",.01)="@"
- +12 DO FILE^DIE("K","GMPLKFDA","GMPLMSG")
- End DoDot:1
- +13 IF '$TEST
- SET ^GMPLINRT(1)=""
- +14 IF GMPLFLAG="@"
- GOTO SVCQT1
- +15 SET GMPLFDA(125.11,"+1,",.01)=GMPLCNME
- +16 SET GMPLFDA(125.11,"+1,",.02)=$$DT^XLFDT
- +17 SET GMPLFDA(125.11,"+1,",.03)=GMPLCLS
- +18 DO UPDATE^DIE("","GMPLFDA","^GMPLINRT","GMPLMSG")
- SVCQT1 IF $DATA(GMPLMSG)
- Begin DoDot:1
- +1 SET GMPLTXT(1)="Unable to "_$SELECT(GMPLFLAG="@":"delete",1:"store")
- +2 SET GMPLTXT(1)=GMPLTXT(1)_" category "_GMPLCNME_" and class "_GMPLCCLS_" in file #125.11."
- +3 SET GMPLTXT(2)="Error "_GMPLMSG("DIERR",1)_": "_GMPLMSG("DIERR",1,"TEXT",1)
- +4 DO EN^DDIOL(.GMPLTXT)
- SET GMPLOK=0
- End DoDot:1
- QUIT
- +5 QUIT GMPLOK
- +6 ;============================================
- SVPROB(GMPLREC,GMPLCNME,GMPLOK) ; Save category problems into subfile 125.11
- +1 NEW GMPLDTXT,GMPLPSEQ,GMPLICD,GMPLSCTC,GMPLSCTD
- +2 NEW GMPLLTRM,GMPLMSG,GMPLTXT,GMPLISTR,GMPLFDA
- +3 IF $LENGTH(GMPLREC,",")>5
- Begin DoDot:1
- +4 NEW GMPLTPC,GMPLDPC,GMPLK
- +5 SET GMPLTPC=$LENGTH(GMPLREC,",")
- SET GMPLDPC=GMPLTPC-4
- SET GMPLDTXT=""
- +6 FOR GMPLK=2:1:(GMPLDPC+1)
- SET GMPLDTXT=GMPLDTXT_$SELECT(GMPLK>2:",",1:"")_$PIECE(GMPLREC,",",GMPLK)
- +7 SET GMPLPSEQ=$$STRIP^XLFSTR($PIECE(GMPLREC,",",1)," ")
- SET GMPLDTXT=$$STRIP^XLFSTR(GMPLDTXT,"""")
- +8 SET GMPLICD=$$STRIP^XLFSTR($PIECE(GMPLREC,",",(GMPLDPC+2))," ")
- +9 SET GMPLSCTC=$$STRIP^XLFSTR($$STRIP^XLFSTR($PIECE(GMPLREC,",",(GMPLDPC+3)),"C")," ")
- +10 SET GMPLSCTD=$$STRIP^XLFSTR($$STRIP^XLFSTR($PIECE($PIECE(GMPLREC,",",(GMPLDPC+4)),""_$CHAR(13)_""),"D")," ")
- End DoDot:1
- +11 IF '$TEST
- Begin DoDot:1
- +12 SET GMPLPSEQ=$$STRIP^XLFSTR($PIECE(GMPLREC,",",1)," ")
- SET GMPLDTXT=$$STRIP^XLFSTR($PIECE(GMPLREC,",",2),"""")
- +13 SET GMPLICD=$$STRIP^XLFSTR($PIECE(GMPLREC,",",3)," ")
- SET GMPLSCTC=$$STRIP^XLFSTR($$STRIP^XLFSTR($PIECE(GMPLREC,",",4),"C")," ")
- +14 SET GMPLSCTD=$$STRIP^XLFSTR($$STRIP^XLFSTR($PIECE($PIECE(GMPLREC,",",5),""_$CHAR(13)_""),"D")," ")
- End DoDot:1
- +15 SET GMPLLTRM=$$GETEXIEN^GMPLX(GMPLSCTC,GMPLSCTD)
- +16 IF GMPLDTXT["sct"
- SET GMPLDTXT=$PIECE(GMPLDTXT,"(")_"("_$$UP^XLFSTR($PIECE($PIECE(GMPLDTXT,"(",2)," "))_" "_$PIECE($PIECE(GMPLDTXT,"(",2)," ",2)
- +17 IF GMPLDTXT'["SCT"
- SET GMPLDTXT=GMPLDTXT_" (SCT "_GMPLSCTC_")"
- +18 IF +GMPLLTRM<0
- Begin DoDot:1
- +19 SET GMPLTXT(1)="Unable to save "_GMPLDTXT
- +20 SET GMPLTXT(2)="Error: "_$PIECE(GMPLLTRM,U,2)
- +21 DO EN^DDIOL(.GMPLTXT)
- SET GMPLOK=0
- End DoDot:1
- QUIT
- +22 SET GMPLISTR=$SELECT(^GMPLCIEN(1)>0:"+2,"_^GMPLCIEN(1)_",",1:"+2,"_^GMPLINRT(1)_",")
- +23 SET GMPLFDA(125.111,GMPLISTR,.01)=GMPLLTRM
- +24 SET GMPLFDA(125.111,GMPLISTR,.02)=GMPLPSEQ
- +25 SET GMPLFDA(125.111,GMPLISTR,.03)=GMPLDTXT
- +26 SET GMPLFDA(125.111,GMPLISTR,.04)=GMPLICD
- +27 SET GMPLFDA(125.111,GMPLISTR,.05)=GMPLSCTC
- +28 SET GMPLFDA(125.111,GMPLISTR,.06)=GMPLSCTD
- +29 DO UPDATE^DIE("","GMPLFDA","","GMPLMSG")
- +30 IF $DATA(GMPLMSG)
- Begin DoDot:1
- +31 SET GMPLTXT(1)="Unable to store problem: "_GMPLDTXT_" from category "_GMPLCNME_"."
- +32 SET GMPLTXT(2)="Error "_GMPLMSG("DIERR",1)_": "_GMPLMSG("DIERR",1,"TEXT",1)
- +33 DO EN^DDIOL(.GMPLTXT)
- SET GMPLOK=0
- End DoDot:1
- +34 QUIT GMPLOK
- +35 ;============================================
- UPDTCNT(GMPLNODE) ; Save/delete the list name & class
- +1 ; Flag indicators: # - Add/edit list, @ - Delete list
- +2 NEW GMPLLST,GMPLFDA,GMPLMSG,GMPLLNME,GMPLLCLS,GMPLCLS
- +3 NEW GMPLSUC,GMPLTXT,GMPLIEN,GMPLINRT,GMPLFLAG
- +4 SET GMPLSUC=1
- +5 SET GMPLLST=^TMP($JOB,GMPLNODE,1,1)
- +6 SET GMPLFLAG=$PIECE(GMPLLST,",",1)
- +7 SET GMPLLNME=$$UP^XLFSTR($PIECE(GMPLLST,",",2))
- +8 SET GMPLLCLS=$$UP^XLFSTR($PIECE(GMPLLST,",",3))
- +9 SET GMPLCLS=$SELECT(GMPLLCLS="NATIONAL":"N",GMPLLCLS="LOCAL":"L",GMPLLCLS="VISN":"V",1:"")
- +10 SET GMPLIEN=+$$FIND1^DIC(125,"","K",GMPLLNME,"","","GMPLMSG")
- +11 IF GMPLIEN>0
- Begin DoDot:1
- +12 SET GMPLINRT(1)=GMPLIEN
- +13 SET GMPLFDA(125,""_GMPLIEN_",",.01)="@"
- +14 DO FILE^DIE("K","GMPLFDA","GMPLMSG")
- End DoDot:1
- +15 IF GMPLFLAG="@"
- GOTO UPQT
- +16 SET GMPLFDA(125,"+1,",.01)=GMPLLNME
- +17 SET GMPLFDA(125,"+1,",.02)=$$DT^XLFDT
- +18 SET GMPLFDA(125,"+1,",.04)=GMPLCLS
- +19 DO UPDATE^DIE("","GMPLFDA","GMPLINRT","GMPLMSG")
- UPQT IF $DATA(GMPLMSG)
- Begin DoDot:1
- +1 SET GMPLTXT(1)="Unable to "_$SELECT(GMPLFLAG="@":"delete",1:"store")
- +2 SET GMPLTXT(1)=GMPLTXT(1)_" list "_GMPLLNME_" and class "_GMPLLCLS_" in file #125."
- +3 SET GMPLTXT(2)="Error: "_GMPLMSG("DIERR",1,"TEXT",1)
- +4 DO EN^DDIOL(.GMPLTXT)
- +5 SET GMPLSUC=0
- End DoDot:1
- +6 ;Reset the 125 0 node so holes are not left.
- +7 IF $DATA(^GMPL(125,0))
- SET $PIECE(^GMPL(125,0),U,3)=0
- +8 QUIT GMPLSUC
- +9 ;============================================
- VALCAT(GMPLTMP,GMPLFLAG,GMPLIMPT,GMPLRNDE,GMPLABRT) ; Validate category info
- +1 NEW GMPLCSEQ,GMPLCNME,GMPLSHDR,GMPLHSTR,GMPLSQST,GMPLNL
- +2 SET GMPLCSEQ=$PIECE(GMPLTMP,",",2)
- SET GMPLCNME=$PIECE(GMPLTMP,",",3)
- +3 SET GMPLSHDR=$PIECE(GMPLTMP,",",4)
- SET GMPLHSTR="Subheader: "_GMPLSHDR
- +4 SET GMPLNL=$GET(^TMP($JOB,GMPLRNDE))
- +5 IF '+$$VFLAG^GMPLINTR(GMPLFLAG)
- SET GMPLABRT=1
- +6 IF '+$$VSEQ^GMPLINTR(GMPLCSEQ,"Category")
- SET GMPLABRT=1
- +7 IF '$TEST
- SET GMPLSQST="Category Sequence: "_GMPLCSEQ
- +8 IF '+$$VNAME^GMPLINTR(GMPLCNME,GMPLIMPT,"Category")
- Begin DoDot:1
- +9 DO EN^DDIOL(" For category sequence #"_GMPLCSEQ_".")
- +10 SET GMPLABRT=1
- End DoDot:1
- +11 IF 'GMPLABRT
- Begin DoDot:1
- +12 SET GMPLNL=GMPLNL+1
- SET ^TMP($JOB,GMPLRNDE,GMPLNL)=""
- +13 SET GMPLNL=GMPLNL+1
- SET ^TMP($JOB,GMPLRNDE,GMPLNL)="Category Name: "_GMPLCNME_$SELECT(GMPLFLAG="@":" ***MARKED FOR DELETION!!!***",1:"")
- +14 SET GMPLNL=GMPLNL+1
- SET ^TMP($JOB,GMPLRNDE,GMPLNL)=$$LJ^XLFSTR(GMPLHSTR,47)_$$LJ^XLFSTR(GMPLSQST,33)
- +15 SET GMPLNL=GMPLNL+1
- SET ^TMP($JOB,GMPLRNDE,GMPLNL)=""
- +16 SET GMPLNL=GMPLNL+1
- SET ^TMP($JOB,GMPLRNDE,GMPLNL)="Prob"_$JUSTIFY("SNOMED CT",10)_$JUSTIFY("SNOMED CT",21)
- +17 SET GMPLNL=GMPLNL+1
- SET ^TMP($JOB,GMPLRNDE,GMPLNL)="Seq"_$JUSTIFY("Concept",9)_$JUSTIFY("Designation",25)_$JUSTIFY("ICD Code",18)_$JUSTIFY("SNOMED CT Description",42)
- +18 SET GMPLNL=GMPLNL+1
- SET ^TMP($JOB,GMPLRNDE,GMPLNL)=$$REPEAT^XLFSTR("-",150)
- End DoDot:1
- +19 SET ^TMP($JOB,GMPLRNDE)=GMPLNL
- +20 QUIT GMPLABRT
- +21 ;============================================
- VALCPROB(GMPLTMP,GMPLRNDE,GMPLABRT) ; Validate category problems
- +1 NEW GMPLPSEQ,GMPLDTXT,GMPLICD,GMPLSCTC,GMPLSCTD,GMPLNL
- +2 SET GMPLNL=$GET(^TMP($JOB,GMPLRNDE))
- +3 IF $LENGTH(GMPLTMP,",")>5
- Begin DoDot:1
- +4 NEW GMPLTPC,GMPLDPC,GMPLK
- +5 SET GMPLTPC=$LENGTH(GMPLTMP,",")
- SET GMPLDPC=GMPLTPC-4
- SET GMPLDTXT=""
- +6 FOR GMPLK=2:1:(GMPLDPC+1)
- SET GMPLDTXT=GMPLDTXT_$SELECT(GMPLK>2:",",1:"")_$PIECE(GMPLTMP,",",GMPLK)
- +7 SET GMPLPSEQ=$$STRIP^XLFSTR($PIECE(GMPLTMP,",",1)," ")
- SET GMPLDTXT=$$STRIP^XLFSTR(GMPLDTXT,"""")
- +8 SET GMPLICD=$$STRIP^XLFSTR($PIECE(GMPLTMP,",",(GMPLDPC+2))," ")
- +9 SET GMPLSCTC=$$STRIP^XLFSTR($$STRIP^XLFSTR($PIECE(GMPLTMP,",",(GMPLDPC+3)),"C")," ")
- +10 SET GMPLSCTD=$$STRIP^XLFSTR($$STRIP^XLFSTR($PIECE($PIECE(GMPLTMP,",",(GMPLDPC+4)),""_$CHAR(13)_""),"D")," ")
- End DoDot:1
- +11 IF '$TEST
- Begin DoDot:1
- +12 SET GMPLPSEQ=$$STRIP^XLFSTR($PIECE(GMPLTMP,",",1)," ")
- SET GMPLDTXT=$$STRIP^XLFSTR($PIECE(GMPLTMP,",",2),"""")
- +13 SET GMPLICD=$$STRIP^XLFSTR($PIECE(GMPLTMP,",",3)," ")
- SET GMPLSCTC=$$STRIP^XLFSTR($$STRIP^XLFSTR($PIECE(GMPLTMP,",",4),"C")," ")
- +14 SET GMPLSCTD=$$STRIP^XLFSTR($$STRIP^XLFSTR($PIECE($PIECE(GMPLTMP,",",5),""_$CHAR(13)_""),"D")," ")
- End DoDot:1
- +15 IF GMPLDTXT["sct"
- SET GMPLDTXT=$PIECE(GMPLDTXT,"(")_"("_$$UP^XLFSTR($PIECE($PIECE(GMPLDTXT,"(",2)," "))_" "_$PIECE($PIECE(GMPLDTXT,"(",2)," ",2)
- +16 IF GMPLDTXT'["SCT"
- SET GMPLDTXT=GMPLDTXT_" (SCT "_GMPLSCTC_")"
- +17 IF '+$$VICD^GMPLINTR(GMPLICD)
- SET GMPLABRT=1
- +18 IF '+$$VSCTCODE^GMPLINTR(GMPLSCTC)
- SET GMPLABRT=1
- QUIT GMPLABRT
- +19 IF '+$$VSCTDSGN^GMPLINTR(GMPLSCTC,GMPLSCTD,$PIECE(GMPLDTXT," (SCT"))
- SET GMPLABRT=1
- +20 IF 'GMPLABRT
- Begin DoDot:1
- +21 SET GMPLNL=GMPLNL+1
- SET ^TMP($JOB,GMPLRNDE,GMPLNL)=$$LJ^XLFSTR(GMPLPSEQ,5)_$$LJ^XLFSTR(GMPLSCTC,21)_$$LJ^XLFSTR(GMPLSCTD,21)_$$LJ^XLFSTR(GMPLICD,29)_$$LJ^XLFSTR(GMPLDTXT,80)
- End DoDot:1
- +22 SET ^TMP($JOB,GMPLRNDE)=GMPLNL
- +23 QUIT GMPLABRT
- +24 ;============================================
- VALSLST(GMPLTMP,GMPLFLAG,GMPLIMPT,GMPLRNDE,GMPLABRT) ; Validate selection list & class
- +1 NEW GMPLLNME,GMPLLCLS,GMPLCCLS,GMPLNL
- +2 SET GMPLLNME=$PIECE(GMPLTMP,",",2)
- SET GMPLLCLS=$PIECE(GMPLTMP,",",3)
- +3 SET GMPLCCLS=$PIECE(GMPLTMP,",",4)
- SET GMPLNL=0
- +4 KILL ^TMP($JOB,GMPLRNDE)
- +5 IF GMPLFLAG="@"
- SET GMPLNL=GMPLNL+1
- SET ^TMP($JOB,GMPLRNDE,GMPLNL)="***MARKED FOR DELETION!!!***"
- +6 IF '+$$VFLAG^GMPLINTR(GMPLFLAG)
- SET GMPLABRT=1
- +7 IF '+$$VNAME^GMPLINTR(GMPLLNME,GMPLIMPT,"List")
- SET GMPLABRT=1
- +8 IF '+$$VCLASS^GMPLINTR(GMPLLCLS,GMPLIMPT,"List")
- SET GMPLABRT=1
- +9 IF '+$$VCLASS^GMPLINTR(GMPLCCLS,GMPLIMPT,"Category")
- SET GMPLABRT=1
- +10 IF 'GMPLABRT
- Begin DoDot:1
- +11 SET GMPLNL=GMPLNL+1
- SET ^TMP($JOB,GMPLRNDE,GMPLNL)="Selection List Name: "_GMPLLNME
- +12 SET GMPLNL=GMPLNL+1
- SET ^TMP($JOB,GMPLRNDE,GMPLNL)="List Class: "_GMPLLCLS_$JUSTIFY("Category Class: ",34)_GMPLCCLS
- End DoDot:1
- +13 SET ^TMP($JOB,GMPLRNDE)=GMPLNL
- +14 QUIT GMPLABRT