Changeset 78 for ccr/trunk/p/GPLCCD.m


Ignore:
Timestamp:
Jul 29, 2008, 4:57:24 PM (16 years ago)
Author:
George Lilly
Message:

improved handling of missing SSN and telephone values

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ccr/trunk/p/GPLCCD.m

    r76 r78  
    2525       I Y<1 Q  ; EXIT
    2626       S DFN=$P(Y,U,1) ; SET THE PATIENT
    27        ; N CCRGLO
    28        D CCDRPC(.CCRGLO,DFN,"CCD","","","")
     27       ; N CCDGLO
     28       D CCDRPC(.CCDGLO,DFN,"CCD","","","")
    2929       S OARY=$NA(^TMP("GPLCCR",$J,DFN,"CCD",1))
    3030       S ONAM="PAT_"_DFN_"_CCD_V1.xml"
     
    5353    I CCRPART="CCD" S CCD=1 ; WE ARE PROCESSING A CCD
    5454    S TGLOBAL=$NA(^TMP("GPLCCR",$J,"TEMPLATE")) ; GLOBAL FOR STORING TEMPLATE
    55     I CCD S CCRGLO=$NA(^TMP("GPLCCR",$J,DFN,"CCD")) ; GLOBAL FOR THE CCD
    56     E  S CCRGLO=$NA(^TMP("GPLCCR",$J,DFN,"CCR")) ; GLOBAL FOR BUILDING THE CCR
     55    I CCD S CCDGLO=$NA(^TMP("GPLCCR",$J,DFN,"CCD")) ; GLOBAL FOR THE CCD
     56    E  S CCDGLO=$NA(^TMP("GPLCCR",$J,DFN,"CCR")) ; GLOBAL FOR BUILDING THE CCR
    5757    S ACTGLO=$NA(^TMP("GPLCCR",$J,DFN,"ACTORS")) ; GLOBAL FOR ALL ACTORS
    5858    ; TO GET PART OF THE CCR RETURNED, PASS CCRPART="PROBLEMS" ETC
     
    6060    I CCD D LOAD^GPLCCD1(TGLOBAL)  ; LOAD THE CCR TEMPLATE
    6161    E  D LOAD^GPLCCR0(TGLOBAL)  ; LOAD THE CCR TEMPLATE
    62     D CP^GPLXPATH(TGLOBAL,CCRGLO) ; COPY THE TEMPLATE TO CCR GLOBAL
     62    D CP^GPLXPATH(TGLOBAL,CCDGLO) ; COPY THE TEMPLATE TO CCR GLOBAL
    6363    N CAPSAVE,CAPSAVE2 ; FOR HOLDING THE CCD ROOT LINES
    6464    S CAPSAVE=@TGLOBAL@(3) ; SAVE THE CCD ROOT
    6565    S CAPSAVE2=@TGLOBAL@(@TGLOBAL@(0)) ; SAVE LAST LINE OF CCD
    66     S @CCRGLO@(3)="<ContinuityOfCareRecord>" ; CAP WITH CCR ROOT
    67     S @TGLOBAL@(3)=@CCRGLO@(3) ; CAP THE TEMPLATE TOO
    68     S @CCRGLO@(@CCRGLO@(0))="</ContinuityOfCareRecord>" ; FINISH CAP
     66    S @CCDGLO@(3)="<ContinuityOfCareRecord>" ; CAP WITH CCR ROOT
     67    S @TGLOBAL@(3)=@CCDGLO@(3) ; CAP THE TEMPLATE TOO
     68    S @CCDGLO@(@CCDGLO@(0))="</ContinuityOfCareRecord>" ; FINISH CAP
    6969    S @TGLOBAL@(@TGLOBAL@(0))="</ContinuityOfCareRecord>" ; FINISH CAP TEMP
    7070    ;
    7171    ; DELETE THE BODY, ACTORS AND SIGNATURES SECTIONS FROM GLOBAL
    7272    ; THESE WILL BE POPULATED AFTER CALLS TO THE XPATH ROUTINES
    73     D REPLACE^GPLXPATH(CCRGLO,"","//ContinuityOfCareRecord/Body")
    74     D REPLACE^GPLXPATH(CCRGLO,"","//ContinuityOfCareRecord/Actors")
    75     I 'CCD D REPLACE^GPLXPATH(CCRGLO,"","//ContinuityOfCareRecord/Signatures")
    76     I DEBUG F I=1:1:@CCRGLO@(0) W @CCRGLO@(I),!
    77     ;
    78     I 'CCD D HDRMAP(CCRGLO,DFN,HDRARY) ; MAP HEADER VARIABLES
     73    D REPLACE^GPLXPATH(CCDGLO,"","//ContinuityOfCareRecord/Body")
     74    D REPLACE^GPLXPATH(CCDGLO,"","//ContinuityOfCareRecord/Actors")
     75    I 'CCD D REPLACE^GPLXPATH(CCDGLO,"","//ContinuityOfCareRecord/Signatures")
     76    I DEBUG F I=1:1:@CCDGLO@(0) W @CCDGLO@(I),!
     77    ;
     78    I 'CCD D HDRMAP(CCDGLO,DFN,HDRARY) ; MAP HEADER VARIABLES
    7979    ; MAPPING THE PATIENT PORTION OF THE CDA HEADER
    8080    S ZX="//ContinuityOfCareRecord/recordTarget/patientRole/patient"
    81     D QUERY^GPLXPATH(CCRGLO,ZX,"ACTT1")
     81    D QUERY^GPLXPATH(CCDGLO,ZX,"ACTT1")
    8282    D PATIENT^GPLACTORS("ACTT1",DFN,"ACTORPATIENT_"_DFN,"ACTT2") ; MAP PATIENT
    8383    I DEBUG D PARY^GPLXPATH("ACTT2")
    84     D REPLACE^GPLXPATH(CCRGLO,"ACTT2",ZX)
    85     I DEBUG D PARY^GPLXPATH(CCRGLO)
     84    D REPLACE^GPLXPATH(CCDGLO,"ACTT2",ZX)
     85    I DEBUG D PARY^GPLXPATH(CCDGLO)
    8686    K ACTT1 K ACCT2
    8787    ; MAPPING THE PROVIDER ORGANIZATION,AUTHOR,INFORMANT,CUSTODIAN CDA HEADER
    8888    ; FOR NOW, THEY ARE ALL THE SAME AND RESOLVE TO ORGANIZATION
    89     D ORG^GPLACTORS(CCRGLO,DFN,"ACTORPATIENTORGANIZATION","ACTT2") ; MAP ORG
    90     D CP^GPLXPATH("ACTT2",CCRGLO)
     89    D ORG^GPLACTORS(CCDGLO,DFN,"ACTORPATIENTORGANIZATION","ACTT2") ; MAP ORG
     90    D CP^GPLXPATH("ACTT2",CCDGLO)
    9191    ;
    9292    K ^TMP("GPLCCR",$J,"CCRSTEP") ; KILL GLOBAL PRIOR TO ADDING TO IT
     
    111111    . I CCD D UNMARK^GPLXPATH(OXML) ; REMOVE THE CCR MARKUP FROM SECTION
    112112    . ; NOW INSERT THE RESULTS IN THE CCR BUFFER
    113     . D INSERT^GPLXPATH(CCRGLO,OXML,"//ContinuityOfCareRecord/Body")
     113    . D INSERT^GPLXPATH(CCDGLO,OXML,"//ContinuityOfCareRecord/Body")
    114114    . I DEBUG F GPLI=1:1:@OXML@(0) W @OXML@(GPLI),!
    115115    ; NEED TO ADD BACK IN ACTOR PROCESSING AFTER WE FIGURE OUT LINKAGE
    116     ; D ACTLST^GPLCCR(CCRGLO,ACTGLO) ; GEN THE ACTOR LIST
     116    ; D ACTLST^GPLCCR(CCDGLO,ACTGLO) ; GEN THE ACTOR LIST
    117117    ; D QUERY^GPLXPATH(TGLOBAL,"//ContinuityOfCareRecord/Actors","ACTT")
    118118    ; D EXTRACT^GPLACTORS("ACTT",ACTGLO,"ACTT2")
    119     ; D INSINNER^GPLXPATH(CCRGLO,"ACTT2","//ContinuityOfCareRecord/Actors")
     119    ; D INSINNER^GPLXPATH(CCDGLO,"ACTT2","//ContinuityOfCareRecord/Actors")
    120120    N I,J,DONE S DONE=0
    121121    F I=0:0 D  Q:DONE ; DELETE UNTIL ALL EMPTY ELEMENTS ARE GONE
    122     . S J=$$TRIM^GPLXPATH(CCRGLO) ; DELETE EMPTY ELEMENTS
     122    . S J=$$TRIM^GPLXPATH(CCDGLO) ; DELETE EMPTY ELEMENTS
    123123    . W "TRIMMED",J,!
    124124    . I J=0 S DONE=1 ; DONE WHEN TRIM RETURNS FALSE
    125125    I CCD D  ; TURN THE BODY INTO A CCD COMPONENT
    126126    . N I
    127     . F I=1:1:@CCRGLO@(0) D  ; SEARCH THROUGH THE ENTIRE ARRAY
    128     . . I @CCRGLO@(I)["<Body>" D  ; REPLACE BODY MARKUP
    129     . . . S @CCRGLO@(I)="<component><structuredBody>" ; WITH CCD EQ
    130     . . I @CCRGLO@(I)["</Body>" D  ; REPLACE BODY MARKUP
    131     . . . S @CCRGLO@(I)="</structuredBody></component>"
    132     S @CCRGLO@(3)=CAPSAVE ; UNCAP - TURN IT BACK INTO A CCD
    133     S @CCRGLO@(@CCRGLO@(0))=CAPSAVE2 ; UNCAP LAST LINE
     127    . F I=1:1:@CCDGLO@(0) D  ; SEARCH THROUGH THE ENTIRE ARRAY
     128    . . I @CCDGLO@(I)["<Body>" D  ; REPLACE BODY MARKUP
     129    . . . S @CCDGLO@(I)="<component><structuredBody>" ; WITH CCD EQ
     130    . . I @CCDGLO@(I)["</Body>" D  ; REPLACE BODY MARKUP
     131    . . . S @CCDGLO@(I)="</structuredBody></component>"
     132    S @CCDGLO@(3)=CAPSAVE ; UNCAP - TURN IT BACK INTO A CCD
     133    S @CCDGLO@(@CCDGLO@(0))=CAPSAVE2 ; UNCAP LAST LINE
    134134    Q
    135135    ;
     
    253253 ;;><TRIM>
    254254 ;;>>>D ZTEST^GPLCCR("CCR")
    255  ;;>>>W $$TRIM^GPLXPATH(CCRGLO)
     255 ;;>>>W $$TRIM^GPLXPATH(CCDGLO)
    256256 ;;><CCD>
    257257 ;;>>>K GPL S GPL=""
Note: See TracChangeset for help on using the changeset viewer.